/****************************************************************************************************************************
   mimetable.h - Dead simple web-server.
   For ESP8266/ESP32 AT-command running shields

   ESP8266_AT_WebServer is a library for the ESP8266/ESP32 AT-command shields to run WebServer
   Based on and modified from ESP8266 https://github.com/esp8266/Arduino/releases
   Built by Khoi Hoang https://github.com/khoih-prog/ESP8266_AT_WebServer
   Licensed under MIT license

   Original author:
   @file       Esp8266WebServer.h
   @author     Ivan Grokhotkov

   Version: 1.1.2

   Version Modified By   Date      Comments
   ------- -----------  ---------- -----------
    1.0.0   K Hoang      12/02/2020 Initial coding for Arduino Mega, Teensy, etc
    1.0.1   K Hoang      17/02/2020 Add support to server's lambda function calls
    1.0.2   K Hoang      22/02/2020 Add support to SAMD (DUE, ZERO, MKR, NANO_33_IOT, M0, M0 Pro, AdaFruit, etc) boards
    1.0.3   K Hoang      03/03/2020 Add support to STM32 (STM32,F0,F1, F2, F3, F4, F7, etc) boards
    1.0.4   K Hoang      19/03/2020 Fix bug. Sync with ESP8266WebServer library of core v2.6.3
    1.0.5   K Hoang      17/04/2020 Add support to SAMD51 and SAM DUE boards
    1.0.6   K Hoang      11/06/2020 Add support to nRF52 boards, such as AdaFruit Feather nRF52832, nRF52840 Express, BlueFruit Sense, 
                                    Itsy-Bitsy nRF52840 Express, Metro nRF52840 Express, NINA_B302_ublox, NINA_B112_ublox, etc.
    1.0.7   K Hoang      23/06/2020 Add support to ESP32-AT. Update deprecated ESP8266-AT commands. Restructure examples. 
    1.0.8   K Hoang      01/07/2020 Fix bug. Add features to ESP32-AT.   
    1.0.9   K Hoang      03/07/2020 Fix bug. Add functions. Restructure codes.
    1.0.10  K Hoang      22/07/2020 Fix bug not closing client and releasing socket.
    1.0.11  K Hoang      25/07/2020 Add support to all STM32F/L/H/G/WB/MP1 and Seeeduino SAMD21/SAMD51 boards  
    1.0.12  K Hoang      26/07/2020 Add example and sample Packages_Patches for STM32F/L/H/G/WB/MP boards
    1.1.0   K Hoang      21/09/2020 Add support to UDP Multicast. Fix bugs.
    1.1.1   K Hoang      26/09/2020 Restore support to PROGMEM-related commands, such as sendContent_P() and send_P()
    1.1.2   K Hoang      28/12/2020 Suppress all possible compiler warnings
 *****************************************************************************************************************************/
#ifndef __MIMETABLE_H__
#define __MIMETABLE_H__

namespace mime
{
  enum type
  {
    html,
    htm,
    css,
    txt,
    js,
    json,
    png,
    gif,
    jpg,
    ico,
    svg,
    ttf,
    otf,
    woff,
    woff2,
    eot,
    sfnt,
    xml,
    pdf,
    zip,
    gz,
    appcache,
    none,
    maxType
  };

  struct Entry
  {
    const char endsWith[16]; 
    const char mimeType[32];
  };

  // Table of extension->MIME strings stored in PROGMEM, needs to be global due to GCC section typing rules
  const Entry mimeTable[maxType] = 
  {
      { ".html",      "text/html" },
      { ".htm",       "text/html" },
      { ".css",       "text/css" },
      { ".txt",       "text/plain" },
      { ".js",        "application/javascript" },
      { ".json",      "application/json" },
      { ".png",       "image/png" },
      { ".gif",       "image/gif" },
      { ".jpg",       "image/jpeg" },
      { ".ico",       "image/x-icon" },
      { ".svg",       "image/svg+xml" },
      { ".ttf",       "application/x-font-ttf" },
      { ".otf",       "application/x-font-opentype" },
      { ".woff",      "application/font-woff" },
      { ".woff2",     "application/font-woff2" },
      { ".eot",       "application/vnd.ms-fontobject" },
      { ".sfnt",      "application/font-sfnt" },
      { ".xml",       "text/xml" },
      { ".pdf",       "application/pdf" },
      { ".zip",       "application/zip" },
      { ".gz",        "application/x-gzip" },
      { ".appcache",  "text/cache-manifest" },
      { "",           "application/octet-stream" } 
  };
}   // namespace mime


#endif
